<?php
/** [广告位置表逻辑层模型]
 * @Author: 976123967@qq.com
 * @Date:   2015-01-15 10:50:57
 * @Last Modified by:   chenli
 * @Last Modified time: 2015-02-28 22:52:36
 */
class PositionLogic extends Model{


	protected $tableName = 'position';
	public $cache;

	/**
	 * [_initialize 初始化]
	 * @return [type] [description]
	 */
	public function _initialize()
	{
		$this->cache = S('position');
	}
	// 自动验证
	/* array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间])
	*
	*  验证条件
	*  Model::EXISTS_VALIDATE 或者0 存在字段就验证 （默认）
	*  Model::MUST_VALIDATE 或者1 必须验证
	*  Model::VALUE_VALIDATE或者2 值不为空的时候验证
	*
	*  验证时间
	*  Model:: MODEL_INSERT 或者1新增数据时候验证
	*  Model:: MODEL_UPDATE 或者2编辑数据时候验证
	*  Model:: MODEL_BOTH 或者3 全部情况下验证（默认）
	* */

	protected $_validate = array(
	   	array('position_name','require','广告位置名称不能为空',1),
	   	array('width','number','位置宽度只能填写数字',2,'',3),
        array('height','number','点位置高度只能填写数字',2,'',3),
	);


	/**
	 * [get_all 所有广告位置]
	 * @return [type] [description]
	 */
	public function get_all()
	{
		return $this->cache;
	}

	/**
	 * [add_position 添加广告位置]
	 */
	public function add_position()
	{
		if(!$this->create())
			return false;
		$this->add();

		// 更新缓存
		$this->update_cache();
		return  true;
	}

	/**
	 * [find_one 查找一条记录]
	 * @return [type] [description]
	 */
	public function find_one()
	{
		$psid = I('get.psid');
		
		return isset($this->cache[$psid])?$this->cache[$psid]:'';

	}

	/**
	 * [edit_position 编辑]
	 * @return [type] [description]
	 */
	public function edit_position()
	{
		// 更新
		if(!$this->create())
			return false;
		$this->save();

		// 更新缓存
		$this->update_cache();

		return true;
	}



	/**
	 * [update_cache 更新缓存]
	 * @return [type] [description]
	 */
	public function update_cache()
	{
		$data = $this->order(array('psid'=>'asc'))->select();
		$temp = array();
		foreach($data as $k=>$v)
		{
			$temp[$v['psid']] = $v;
		}
		S('position',$temp);
	}

	/**
	 * [del_position 删除广告位置]
	 * @return [type] [description]
	 */
	public function del_position()
	{
		// 验证
		$psid = I('get.psid');
		$data = D('Ad')->where(array('position_psid'=>$psid))->find();
		if($data)
		{
			$this->error = '请先删除广告';
			return false;
		}
		// 删除数据
		$this->delete($psid);
		// 更新缓存
		$this->update_cache();

		return true;
	}

}